package com.pni.game.cards.components;

import java.util.List;

import com.pni.game.cards.Card;
import com.pni.game.cards.CardHolder;

/**
 * Interface that represents how to interact with the dealer in a game of cards. The dealer's responsibility is 
 * the distribution collection and shuffling of cards.
 * 
 * @author neevans
 *
 */
public interface DealerInterface {
	
	/**
	 * Distributes a number of cards from the dealers deck to a card holder.
	 * @param cardHolder  The card holder object that is to be given cards.
	 * @param number The number of cards to give to the cardHolder
	 */
	public void distributeCards(CardHolder cardHolder, int number);
	
	/**
	 * Collects a set number of cards from a card source and returns them to the deck.
	 * 
	 * @param cardHolder the card source to return the cards from.
	 */
	public void collectCards(CardHolder cardHolder, int number);
	
	/**
	 * 	Shuffles the deck in its current state so that all cards that currently exist in the deck will have a new random position.
	 */
	public void shuffleDeck();

}
